/*
 *Description:
 *User:laoHu
 *Created with Intellij IDEA 2025
 *Data:2025.06.10
 *Time:14：21
 */

class Out{

    void test(){
        System.out.println("test()方法被执行了....");
    }
}

interface IA{

    void test();
}
public class Main{

    //匿名内部类
    public static void main(String[] args) {

        //匿名内部类的使用:实例化对象，但不需要引用
       new Out(){

        }.test();
       //实例化一个内部类，使用IA接口，并重写IA的抽象方法
       IA ia = new IA(){
           @Override
           public void test() {
               System.out.println("IA的test()方法被重写了....");
           }
       };
       ia.test();
    }

    //局部内部类：只能在当前方法中使用
   static void testMethod(){

        class Inner{

            void test(){

                System.out.println("test()方法被执行了....");
            }
        }
        Inner inner = new Inner();
        inner.test();
    }
    public static void main3(String[] args) {

        testMethod();
    }

    //实例化内部类
    public static void main2(String[] args) {

        //实例化一个实例化内部类对象
        //1.实例化一个外部类
        //2.通过外部类引用实例化内部类对象
        Outclass outclass = new Outclass();
        Outclass.innerClass innerClass = outclass.new innerClass();

        //调用方法
        innerClass.test();
    }

    //静态内部类
    public static void main1(String[] args) {

        //实例化
        //innerClass innerClass = new innerClas();不支持
        Outclass1.innerClass innerClass = new Outclass1.innerClass();

        innerClass.test();

    }
}

